package com.open.capacity.finance.service;

import com.open.capacity.finance.dto.echart.AuditWarnDto;
import com.open.capacity.finance.dto.echart.CategoryCompanyWarnDetailDto;
import com.open.capacity.finance.dto.echart.CompanyWarnDetailDto;
import com.open.capacity.finance.entity.AuditModelWarn;

import com.open.capacity.commons.PageResult;

import java.util.Map;
import java.util.List;

/**
 * 模型指标搞定
 *
 * @author
 * @email
 * @date 2023-02-22 13:43:58
 */
public interface AuditModelWarnService {
    /**
     * 添加
     *
     * @param auditModelWarn
     */
    int save(AuditModelWarn auditModelWarn);

    /**
     * 修改
     *
     * @param auditModelWarn
     */
    int update(AuditModelWarn auditModelWarn);

    /**
     * 添加
     *
     * @param id
     */
    int read(Long id);

    /**
     * 添加
     *
     * @param id
     */
    int ingore(Long id, Long day);

    /**
     * 备注
     *
     * @param id
     */
    int remark(Long id, String remark);

    /**
     * 下发
     *
     * @param ids
     */
    int send(String ids, Integer status);

    /**
     * 删除
     *
     * @param ids
     */
    int delete(String ids);


    /**
     * 查询记录
     *
     * @param id
     * @return
     */
    AuditModelWarn findById(Long id);

    /**
     * 查询指标最新的告警记录
     *
     * @param modelId
     * @return
     */
    AuditModelWarn findLastByModelId(String modelId, String companyId, String planId);

    /**
     * 查询指标统计
     *
     * @return
     */
    AuditWarnDto countWarn();


    //统计每个指标各个单位的情况
    List<CompanyWarnDetailDto> groupByModelId();


    /**
     * 是否需要被通知
     *
     * @return
     */
    boolean needWarn(String modelId, String companyId);


    /**
     * 分页
     *
     * @param params
     * @return
     */
    PageResult<AuditModelWarn> pageMy(Map<String, Object> params);

    /**
     * 分页
     *
     * @param params
     * @return
     */
    PageResult<AuditModelWarn> pageAll(Map<String, Object> params);

    /**
     * 列表
     *
     * @param params
     * @return
     */
    List<AuditModelWarn> findAll(Map<String, Object> params);
}

